home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / prg_gen / euphor14.zip / DOSINT.EX < prev    next >
Text File  |  1996-04-05  |  2KB  |  54 lines

  1.     -- DOS Interrupt examples
  2.  
  3. include machine.e
  4.  
  5. constant SCREEN = 1, ERR = 2
  6.  
  7.     -- Example 1: Get DOS version number
  8.  
  9. sequence reg_list -- list of register values
  10.  
  11. reg_list = repeat(0, 10)
  12. reg_list[REG_AX] = #3000   -- function: AH = #30 ==> Get MS-DOS Version Number
  13.  
  14. reg_list = dos_interrupt(#21, reg_list) -- Call DOS interrupt #21
  15.  
  16. if remainder(reg_list[REG_FLAGS], 2) then
  17.     puts(ERR, "Problem with Get DOS version interrupt\n")
  18. end if
  19. printf(SCREEN, "DOS Version: %d.%d\n", {remainder(reg_list[REG_AX], #100), 
  20.                        floor(reg_list[REG_AX] / #100)})
  21.  
  22.             
  23.     -- Example 2: Get name of current directory
  24.     -- Note: Euphoria has a library routine for this. See current_dir().
  25.  
  26. integer low_buff, p  -- low memory addresses (integer ok)
  27. sequence dir_name
  28.  
  29. low_buff = allocate_low(100)  -- space in low memory to hold directory name
  30.  
  31. reg_list = repeat(0, 10)
  32. reg_list[REG_AX] = #4700                   -- function: AH = #47
  33. reg_list[REG_DI] = 0                       -- select current drive
  34. reg_list[REG_DS] = floor(low_buff / 16)    -- address - paragraph number 
  35. reg_list[REG_SI] = remainder(low_buff, 16) -- address - offset
  36.  
  37. reg_list = dos_interrupt(#21, reg_list)    -- Call DOS interrupt #21
  38.  
  39. if remainder(reg_list[REG_FLAGS], 2) != 0 then
  40.     puts(2, "Couldn't get name of current directory!\n")
  41. end if
  42.  
  43. dir_name = "\\"
  44. p = low_buff
  45. while peek(p) != 0 do
  46.     dir_name = dir_name & peek(p)
  47.     p = p + 1
  48. end while
  49.  
  50. free_low(low_buff)
  51.  
  52. puts(SCREEN, "Current Directory: " & dir_name & '\n')
  53.  
  54.